Window Functions é Onde a Maioria Fica Presa 90% dos analistas conhecem SELECT/WHERE, mas quando chega em Window Functions, eles procrastinam. O problema é que Window Functions parecem complicadas no primeiro encontro. A verdade? Cada uma resolve um problema que antes exigia 3 subqueries. E quando você domina as 3 principais (ROW_NUMBER, LAG/LEAD, SUM OVER), sua vida como analista muda completamente. As 3 Window Functions que Separam Júnior de Sênior ROW_NUMBER() — Numeração e Ranking A mais simples mas mais poderosa. ROW_NUMBER() atribui um número sequencial a cada linha dentro de uma partição. Cenário real: você tem vendas por vendedor e quer saber qual foi a venda número 1, 2, 3 de cada pessoa. Resultado: cada vendedor tem seu próprio ranking. Vendedor A tem sua venda maior como ranking 1, segunda maior como ranking 2. Simples. Caso de uso: encontrar a compra mais recente por cliente, identificar duplicatas (quando ranking > 1 significa duplicada), top 3 vendas por região. LAG() e LEAD() — Comparação com Linha Anterior/Próxima LAG te dá o valor da linha anterior. LEAD te dá o valor da linha próxima. Isso parece simples, mas resolve padrões complexos. Cenário real: você tem série temporal de vendas e quer saber quanto cresceu de um mês para o outro. Resultado: uma query que mostra o valor atual, o valor anterior, e automaticamente calcula crescimento. Caso de uso: análise de churn (usuário saiu?), anomalia detection (vendas caíram 50%?), sequências de comportamento (usuário abriu app 3x seguidas?). SUM() OVER — Agregação em Janelas SUM() OVER cria uma linha agregada sem remover as linhas individuais. É como um GROUP BY, mas que mantém o detalhe. Cenário real: você tem vendas por dia e quer saber vendas acumuladas (running total) sem perder a linha de cada dia. Resultado: cada linha mostra a venda do dia MAIS o total acumulado até aquele dia para esse vendedor. Sem agregar. Caso de uso: gráficos de tendência (quanto você vendeu até agora este mês?), percentual de meta (você alcançou 75% da meta?), curva de aprendizado (quanto tempo levou para chegar a 1000 usuários?). Por Que Isso Separa Júnior de Sênior Desenvolvedor júnior: escreve 3 subqueries aninhadas. Query leva 45 segundos para rodar. Desenvolvedor sênior: escreve 1 query com Window Functions. Query leva 0.8 segundos. A diferença não é apenas velocidade. É elegância. SQL sênior não é escrever queries complexas—é saber ONDE o banco está sofrendo. Window Functions são a resposta para 80% dos problemas que parecem impossíveis em SQL. Elite Data Academy ensina SQL avançado com casos reais de analytics. Python, Power BI, Excel e Looker Studio em um só lugar. Acesse agora e comece com 7 dias grátis—R$ 35/mês depois.